# 程序出错，异常抛给代码
try:
    num = int(input("请输入数字"))
    print("您输入的数字为%d" % num)
# 针对不同类型错误做出不同处理方案
# except:
except ZeroDivisionError:
    print("不能输入0")
# except ValueError:
#     print("请输入正确的数")
# 捕获未知错误,result为Exception的变量名
except Exception as result:
    print("未知错误 %s" % result)
# 正常执行完成没有异常才会执行else
else:
    print("恭喜你很健壮")
# 无论程序是否正常都会执行
finally:
    print("finally")


# 异常传递，异常会向上传递给方法调用方
def demo1():
    return int(input("输入整数"))


def demo2():
    demo2_res = demo1()
    return demo2_res


# 利用异常传递性，只需要在主程序捕获异常
try:
    print(demo2())
except Exception as result:
    print(result)


# 抛出异常
def login(password):
    if len(password) < 5:
        # 密码错误，抛出异常
        # 创建异常对象
        ex = Exception("密码长度不投")
        # 抛出异常对象
        raise ex
    print("密码正确")


# 捕获抛出的异常
try:
    login("11")
except Exception as result:
    print("未知异常")
